// =================================================================
// File: Tokenize.cpp
// Desc: Contains the function for tokenizeing a string.
// =================================================================

#include <string>
#include <vector>
#include "Tokenize.h"

using namespace std;

// =================================================================
// FUNCTIONS
// =================================================================

// =================================================================
// Name: Tokenize
// Desc: Removes the delimiters from the string and stores the tokens without the delimiters
// Args: string &str - the string to remove the delimiters from
//	 vector<string> &tokens - the vector to put the tokens in without the delimiters
//       const string &delimiters - the characters to remove from the string str.
// =================================================================
void Tokenize(const string &str, vector<string> &tokens, const string &delimiters)
{
	// Skip delimiters at beginning.
	string::size_type lastPos = str.find_first_not_of(delimiters, 0);
	// Find first "non-delimiter".
	string::size_type pos     = str.find_first_of(delimiters, lastPos);

	while (string::npos != pos || string::npos != lastPos) {
		// Found a token, add it to the vector.
		tokens.push_back(str.substr(lastPos, pos - lastPos));
		// Skip delimiters.  Note the "not_of"
		lastPos = str.find_first_not_of(delimiters, pos);
		// Find next "non-delimiter"
		pos = str.find_first_of(delimiters, lastPos);
	}
}

